home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / demos / VisualAge for Java 2.0 Entry / setup / data1.cab / ide-e / IDE / cache / 1V3K8H9 (.txt) < prev    next >
Encoding:
Java Class File  |  1998-09-16  |  3.7 KB  |  95 lines

  1. package com.sun.java.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.EventQueue;
  5. import java.awt.Toolkit;
  6.  
  7. class SystemEventQueueUtilities {
  8.    private static boolean checkedSystemEventQueue = false;
  9.    private static EventQueue systemEventQueue = null;
  10.  
  11.    static synchronized void addRunnableCanvas(JApplet applet) {
  12.       JRootPane rootPane = applet.getRootPane();
  13.       if (rootPane != null && ((JComponent)rootPane).getClientProperty("defeatSystemEventQueueCheck") != null) {
  14.          checkedSystemEventQueue = true;
  15.       }
  16.  
  17.       RunnableCanvas rc = new RunnableCanvas(applet);
  18.       applet.getLayeredPane().add(rc);
  19.    }
  20.  
  21.    private static synchronized void initSystemEventQueue() {
  22.       if (!checkedSystemEventQueue) {
  23.          try {
  24.             systemEventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
  25.          } catch (SecurityException var4) {
  26.             System.err.println("Swing: checked access to system event queue.");
  27.          } finally {
  28.             checkedSystemEventQueue = true;
  29.          }
  30.       }
  31.  
  32.    }
  33.  
  34.    static Exception postRunnable(Runnable doRun, Object lock) {
  35.       if (!checkedSystemEventQueue) {
  36.          initSystemEventQueue();
  37.       }
  38.  
  39.       RunnableEvent event = new RunnableEvent(doRun, lock);
  40.       if (systemEventQueue != null) {
  41.          systemEventQueue.postEvent(event);
  42.       } else {
  43.          postRunnableCanvasEvent(event);
  44.       }
  45.  
  46.       return event.exception;
  47.    }
  48.  
  49.    private static synchronized void postRunnableCanvasEvent(RunnableEvent e) {
  50.       RunnableCanvas runnableCanvas = com.sun.java.swing.SystemEventQueueUtilities.RunnableCanvas.lookup(e);
  51.       if (runnableCanvas == null) {
  52.          if (e.lock != null) {
  53.             e.lock.notify();
  54.          }
  55.  
  56.       } else {
  57.          runnableCanvas.addRunnableEvent(e);
  58.          ((Component)runnableCanvas).repaint();
  59.       }
  60.    }
  61.  
  62.    private static void processRunnableEvent(RunnableEvent runnableEvent) {
  63.       Object lock = runnableEvent.lock;
  64.       if (lock == null) {
  65.          runnableEvent.doRun.run();
  66.       } else {
  67.          synchronized(lock){}
  68.  
  69.          try {
  70.             try {
  71.                runnableEvent.doRun.run();
  72.             } catch (Exception var11) {
  73.                runnableEvent.exception = var11;
  74.             } finally {
  75.                if (runnableEvent.lock != null) {
  76.                   runnableEvent.lock.notify();
  77.                }
  78.  
  79.             }
  80.          } catch (Throwable var13) {
  81.             throw var13;
  82.          }
  83.       }
  84.  
  85.    }
  86.  
  87.    static synchronized void removeRunnableCanvas(JApplet applet) {
  88.       com.sun.java.swing.SystemEventQueueUtilities.RunnableCanvas.remove(applet);
  89.    }
  90.  
  91.    static void access$processRunnableEvent(RunnableEvent var0) {
  92.       processRunnableEvent(var0);
  93.    }
  94. }
  95.